<?php

require_once '../contexto/DbFinanceiro.php';

class UsuarioDAO
{   
    public function inserir(Usuario $usuario)
    {
        try 
        {
            $db = new DbFinanceiro();
            $pdo = $db->conectar();

            $stmt = $pdo->prepare("INSERT INTO usuarios (nome, email, senha) VALUES (:nome, :email, :senha)");
            $stmt->bindValue(":nome",  $usuario->getNome());
            $stmt->bindValue(":email", $usuario->getEmail());
            $stmt->bindValue(":senha", $usuario->getSenha());
            $stmt->execute();
            
            return $stmt->rowCount();
        } 
        catch (PDOException $ex) 
        {
            print $ex->getMessage();
        }
    }
    
    public function listarPorId($id)
    {
        try 
        {
            $db = new DbFinanceiro();
            $pdo = $db->conectar();

            $stmt = $pdo->prepare("SELECT * FROM usuarios WHERE id = :id");
            $stmt->bindValue(":id", $id);
            $stmt->execute();

            return $stmt->rowCount();
        } 
        catch (PDOException $ex) 
        {
            echo "Ocorreu um Erro ao Buscar os Dados: ". $ex->getMessage();
        }
    }
    
    public function listarTodos()
    {
        try 
        {
            $db = new DbFinanceiro();
            $pdo = $db->conectar();
            
            $stmt = $pdo->prepare("SELECT * FROM usuarios");
            $stmt->execute();
            
            return $stmt->fetchAll(PDO::FETCH_OBJ);
        } 
        catch (PDOException $ex) 
        {
            echo $ex->getMessage();
        }
    }
    
    public function alterar(Usuario $usuario)
    {
        try 
        {
            $db = new DbFinanceiro();
            $pdo = $db->conectar();
            
            $stmt =$pdo->prepare("UPDATE usuarios SET nome = :nome, email = :email, senha = :senha WHERE id = :id");
            $stmt->bindValue(":nome", $usuario->getNome());
            $stmt->bindValue(":email", $usuario->getEmail());
            $stmt->bindValue(":senha", $usuario->getSenha());
            $stmt->bindValue(":id", $usuario->getId());
            $stmt->execute();
            
            if ($stmt->rowCount() > 0) 
            {
                return "Alteração foi Realizada com Sucesso!";
            }
            else
            {
                return "Não Foi Possível Realizar a Alteração!";
            }
        } 
        catch (PDOException $ex) 
        {
            echo $ex->getMessage();
        }
    }
    
    public function deletar($id)
    {
        try 
        {
            $db = new DbFinanceiro();
            $pdo = $db->conectar();
            
            $stmt = $pdo->prepare("DELETE FROM usuarios WHERE id = :id");
            $stmt->bindValue(":id", $id);
            $stmt->execute();
            
            if ($stmt->rowCount() > 0) 
            {
                return "Usuários Deletado com Sucesso!";
            }
            else
            {
                return "Não Foi Possível Deletar o Usuário!";
            }
        } 
        catch (PDOException $ex) 
        {
            echo $ex->getMessage();
        }
    }
}
